package com.zkr.kufang.service;

import com.zkr.kufang.mapper.KuFangMapper;
import com.zkr.kufang.model.*;
import com.zkr.subclass.enummodel.StatusEnum;
import com.zkr.util.AllRecords;
import com.zkr.util.ResultBuilderVo;
import com.zkr.util.ResultVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.validation.Valid;
import java.util.Date;
import java.util.List;

/**
 * Created by lenovo on 2021/1/13.
 */
@Service
public class KuFangServiceImpl implements KuFangService{

    @Autowired
    private KuFangMapper kuFangMapper;
    @Override
    public ResultVo queryPage(KuFangSelectVo kuFangSelectVo) {
        int count = kuFangMapper.queryCount(kuFangSelectVo);
        List<KuFangVo> kuFangVoList = kuFangMapper.queryPage(kuFangSelectVo);
        for (KuFangVo kuFangVo:kuFangVoList){
            Integer status =kuFangVo.getStatus()==true?1:0;
            for (StatusEnum c:StatusEnum.values()){
                if (c.getValue().equals(status)){
                    kuFangVo.setStatusName(c.getName());
                }
            }
        }

        AllRecords allRecords = new AllRecords();
        allRecords.setPageIndex(kuFangSelectVo.getPageIndex());
        allRecords.setDataList(kuFangVoList);
        allRecords.setPageSize(kuFangSelectVo.getPageSize());
        allRecords.setTotalNumber(count);
        allRecords.resetTotalNumber(count);
        return ResultBuilderVo.success(allRecords);


    }

    //添加
    @Transactional
    @Override
    public ResultVo add(@Valid KuFangAddVo kuFangAddVo) {
        //验证库房标识编码
        KuFangVo  kufangcode = kuFangMapper.queryCode(kuFangAddVo.getCode());
        if (kufangcode !=null){
            return ResultBuilderVo.error("库房标识编码已经存在");
        }
        KuFangVo kufangname = kuFangMapper.queryName(kuFangAddVo.getName());
        if(kufangname !=null){
            return ResultBuilderVo.error("库房标识名称已经存在");
        }
        KuFangVo kuFangVo = new KuFangVo();
        kuFangVo.setCreateName("张三");
        kuFangVo.setCreateTime(new Date());
        kuFangVo.setUpdateName("张三");
        kuFangVo.setUpdateTime(new Date());

        //把左边的数据赋值给右边
        BeanUtils.copyProperties(kuFangAddVo,kuFangVo);
        //入库
        kuFangMapper.insertkufang(kuFangVo);
        return ResultBuilderVo.success();

    }

    @Override
    @Transactional
    public ResultVo updateStatus(@Valid KuFangUpdateStatusVo kuFangUpdateStatusVo) {
       /* KQSXVo kuFangVo = kuFangMapper.queryById(kuFangUpdateStatusVo.getId());

        if (kuFangVo==null){
            return ResultBuilderVo.error("修改数据不存在!");
        }*/
        KuFangVo kuFangVo1 = new KuFangVo();
        BeanUtils.copyProperties(kuFangUpdateStatusVo,kuFangVo1);
        kuFangVo1.setUpdateTime(new Date());
        kuFangVo1.setUpdateName("李四");
        kuFangMapper.updateStatus(kuFangVo1);
        return ResultBuilderVo.success();


    }

    @Override
    @Transactional
    public ResultVo update(@Valid KuFangUpdateVo kuFangUpdateVo) {
        KuFangVo kufangname = kuFangMapper.queryName(kuFangUpdateVo.getName());
        if (kufangname != null){
            if (!(kufangname.getId().equals(kuFangUpdateVo.getId()))){
                return ResultBuilderVo.error("库房标识名称已经存在");
            }

        }
        KuFangVo kufangRemark = kuFangMapper.queryRemark(kuFangUpdateVo.getRemark());
        if (kufangRemark != null){
           if (!(kufangRemark.getId().equals(kuFangUpdateVo.getId()))){
                return ResultBuilderVo.error("标识描述名称已经存在");
            }
        }
        KuFangVo kuFangVo1 = new KuFangVo();
        BeanUtils.copyProperties(kuFangUpdateVo,kuFangVo1);
        kuFangVo1.setUpdateTime(new Date());
        kuFangVo1.setUpdateName("李四");
        kuFangMapper.update(kuFangVo1);

        return ResultBuilderVo.success();


    }
}
